package com.smart.tool.log;

import java.util.Map;

import com.smart.tool.log.impl.DefaultLoggerFormatter;
import org.slf4j.Logger;

/**
 * @Author gao.gwq
 * @Version WorkforceLoggerUtil.java, v 0.1 2023年11月28日 20:41 gao.gwq
 * @Description: TODO
 */
public class LoggerUtil {


    static {
        SmartLogger.setFormatter(new DefaultLoggerFormatter());
    }



    /**
     * 日志error记录器
     *
     * @param logger            日志打印对象
     * @param bizName          业务名称
     *                          {类名#方法名称}
     * @param msgFormat 业务关键字表述
     *                          参数格式  1、"更新用户方法执行成功"
     *                          2、"更新用户方法执行失败 参数1={},参数2={}"
     * @param params 业务参数 new Object[]{param1,param2} 对象不需要自己转换为字符串，
     * @param resultData    业务返回值 可以是方法的返回结果、也可以是抛出的异常，可以为null
     */
    public final static void debug(Logger logger, DomainType domainType,String bizName,String bizId,  String msgFormat,
        Map<String,Object> params, Object resultData) {
        SmartLogger.debugForBusiness(logger,domainType.getCode(), bizName, bizId, msgFormat, params, resultData);
    }

    /**
     * 日志error记录器
     *
     * @param logger            日志打印对象
     * @param bizName          业务名称
     *                           {类名#方法名称}
     * @param msgFormat 业务关键字表述
     *                          参数格式  1、"更新用户方法执行成功"
     *                          2、"更新用户方法执行失败 参数1={},参数2={}"
     * @param params 业务参数 new Object[]{param1,param2} 对象不需要自己转换为字符串，
     * @param resultData    业务返回值 可以是方法的返回结果、也可以是抛出的异常，可以为null
     */
    public final static void info(Logger logger, DomainType domainType,String bizName,String bizId,  String msgFormat,
        Map<String,Object> params, Object resultData) {
        SmartLogger.infoForBusiness(logger,domainType.getCode(), bizName, bizId, msgFormat, params, resultData);
    }

    /**
     * 日志error记录器
     *
     * @param logger            日志打印对象
     * @param bizName          业务名称
     *                          {类名#方法名称}
     * @param msgFormat 业务关键字表述
     *                          参数格式  1、"更新用户方法执行成功"
     *                          2、"更新用户方法执行失败 参数1={},参数2={}"
     * @param params 业务参数 new Object[]{param1,param2} 对象不需要自己转换为字符串，
     * @param resultData    业务返回值 可以是方法的返回结果、也可以是抛出的异常，可以为null
     */
    public final static void warn(Logger logger, DomainType domainType,String bizName,String bizId,  String msgFormat,
        Map<String,Object> params, Object resultData) {
        SmartLogger.warnForBusiness(logger,domainType.getCode(), bizName, bizId, msgFormat, params, resultData);
    }

    /**
     * 日志error记录器
     *
     * @param logger            日志打印对象
     * @param bizName          业务名称
     *                          {类名#方法名称}
     * @param msgFormat 业务关键字表述
     *                          参数格式  1、"更新用户方法执行成功"
     *                          2、"更新用户方法执行失败 参数1={},参数2={}"
     * @param params 业务参数 key ->value ,key-value 。对象不需要自己转换为字符串，
     * @param resultData    业务返回值 可以是方法的返回结果、也可以是抛出的异常，可以为null
     */
    public final static void error(Logger logger,DomainType domainType, String bizName,String bizId,  String msgFormat,
        Map<String,Object> params, Object resultData) {
        SmartLogger.errorForBusiness(logger,domainType.getCode(), bizName,bizId, msgFormat, params, resultData);
    }
}